package com.example.innerclass4.exercise;

/**
 * 匿名内部类习题
 */
public class InnerClassExercise02 {
    public static void main(String[] args) {

    /*
    1.有一个铃声接口Bell，里面有个ring方法。
    2.有一个手机类Cellphone，具有闹钟功能alarmClock，参数是Bell类型
    3.测试手机类的闹钟功能，通过匿名内部类(对象)作为参数，打印：懒猪起床了
    4.再传入另一个匿名内部类(对象)，打印：小伙伴上课了
     */

        Cellphone cellphone = new Cellphone();

        cellphone.alarmClock(new Bell() {
            @Override
            public void ring() {
                System.out.println("懒猪起床了");
            }
        });

        cellphone.alarmClock(new Bell() {
            @Override
            public void ring() {
                System.out.println("小伙伴上课了");
            }
        });
    }
}

interface Bell {
    void ring();
}

class Cellphone {
    public void alarmClock(Bell bell) {
        //因为我们不同的匿名内部类传入进来，运行类型也会不同，会根据运行类型去找到，对应的方法去执行
        bell.ring();//会有动态绑定
    }
}

